package io;

import java.io.File;
import java.util.Scanner;
//给定一个指定的扫描路径，在这路径所对应的目录底下，找包含关键的文件，并决定是否删除
public class Demo10 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        //1.让用户输入一个要扫描的路径
        System.out.println("请你输入一个路径：");
        String rootPath = scanner.next();
        //2.让用户输入一个搜索的关键词
        System.out.println("请输入要搜索的文件名关键字:");
        String words=scanner.next();
        //3.检查用户输入的合法性
        //3.1检查关键词的合法性
        if (words.isEmpty()){
            System.out.println("输入的关键词为空！");
            return;
        }
        //3.2检查路径的合法性
        File file=new File(rootPath);
        if (!file.isDirectory()){
            System.out.println("输入的路径是错误的！");
            return;
        }
        //代码能走到这说明用户输入的关键词和路径都是合法的
        search(file,words);
    }

    private static void search(File rootFile, String words) {
        //将目录中所有的文件名都列出来
        File[] files=rootFile.listFiles();
        //如果目录中有文件，但是文件是空的，直接return,因为文件是空的就没有内容，自然就没有关键词
        if (files==null){
            return;
        }
        //文件不为空，去遍历此目录中的每一个文件，去判断当前文件是一个文件，还是一个目录
        for (File file:
             files) {
            if (file.isFile()){
                // 判断当前文件名是否包含 word
                tryDelete(file, words);
            } else if (file.isDirectory()) {
                //当前遍历到的是一个目录，直接递归
                search(file,words);
            }else {
                //不处理
            }
        }
    }

    private static void tryDelete(File file, String words) {
        Scanner scanner = new Scanner(System.in);
        if (file.getName().contains(words)) {
            System.out.println("找到文件: " + file.getAbsolutePath());
            System.out.println("是否要删除: (Y/n)");
            String choice = scanner.next();
            if (choice.equals("Y") || choice.equals("y")) {
                file.delete();
            } else {
                System.out.println("取消删除!");
            }
        }
    }
}
